#ifndef AN_THREAD_H
#define AN_THREAD_H

#include <QThread>
#include <QJsonObject>

#include "AnGlobal.h"

/**
 * @brief The AnThread class 请求处理线程
 */
class AnThread : public QThread
{
	Q_OBJECT

private:
	QJsonObject _request;		//请求的数据

	/**
	 * @brief 针对各个请求的处理函数
	 */
	void _adb_check();

	void _devices_check();
	void _devices_info();
    void _devices_disconnect();

	void _connect_check();
	void _connect_build();
    void _connect_close();
    void _connect_accident();

	void _app_list();
	void _app_install();
	void _app_uninstall();
	void _app_backup();

    //void _file_ls();
    void _file_list();
	void _file_delete();
	void _file_import();
	void _file_export();

    void _contacts_backup();
    void _contacts_recovery();

    void _screencap();


public:
	AnThread();
	AnThread(QJsonObject an_request);
	/**
	 * @brief run 线程运行的起始代码
	 */
	void run() Q_DECL_OVERRIDE;
	/**
	 * @brief setRequest 为该线程设置请求
	 * @param an_request 请求的数据
	 */
	void setRequest(QJsonObject an_request);

public slots:


signals:
	/**
	 * @brief response 请求处理完毕后发送，与AnCallback类的response_slot槽函数绑定
	 * @param an_response 处理完毕的数据
	 */
	void response(QJsonObject an_response);
	/**
	 * @brief threadFinished 线程结束后发送，用于线程资源的回收，与AnAdbServer的threadFinished槽函数绑定
	 * @param an_thread 指向本线程的指针
	 */
	void threadFinished(AnThread * an_thread);

    void sys_response(QJsonObject an_response);
};


#endif
